const utils = require("../Services/utils");

const jd = {};

jd.jdScript = function (isFirst, mode) {
  if (isFirst) {
    console.log(
      "当前设备比京东时间慢" +
        Api.jdTimePlus +
        "ms，与京东服务器响应时间为" +
        Api.jdNetWorkDelay +
        "ms"
    );
    openJD();
    switch (mode) {
      // 类型为淘宝时，其他平台按钮禁用
      case "detailMode":
        detailFunc(true);
        break;
      case "shopCartMode":
        shopCartFunc();
      default:
        break;
    }
  }
};

// 详情页模式
function detailFunc(firstEnter) {
  console.log("当前模式：详情页模式");
  let isDetailPage = false;
  let startShop = false;
  while (!startShop) {
    sleep(5);
    if (firstEnter) {
      console.log(content.waitDetail);
    }

    while (!isDetailPage) {
      sleep(5);
      // 未发现详情页则一直执行监听
      if (text("店铺").exists() && text("购物车").exists()) {
        isDetailPage = true;
      }
    }
    if (firstEnter) {
      console.log(content.alreadyDetail);
    }

    // 已发现详情页
    while (isDetailPage) {
      sleep(5);
      if (!text("店铺").exists() || !text("购物车").exists()) {
        isDetailPage = false;
      }

      if (text("立即购买").exists() || text("立即抢购").exists()) {
        if (firstEnter) {
          const startTime = new Date().getTime();
          // 开启一个线程监听是否抢购结束
          threads.start(function () {
            while (true) {
              sleep(100);
              if (
                startTime + Number(Storages.getJDSettings().buyTime) * 1000 <
                new Date().getTime()
              ) {
                console.log("抢购结束");
                threads.shutDownAll();
              }
            }
          });
        }
        isDetailPage = false;
        startShop = true;

        if (text("立即购买").exists()) {
          // 这里执行抢购方案
          const submit1 = text("立即购买").findOne(50);
          // 做随机数点击位置防止行为检测
          click(
            submit1.bounds().centerX() + utils.randomFunc(10),
            submit1.bounds().centerY() + utils.randomFunc(5)
          );
        } else if (text("立即抢购").exists()) {
          // 这里执行抢购方案
          const submit2 = text("立即抢购").findOne(50);
          // 做随机数点击位置防止行为检测
          click(
            submit2.bounds().centerX() + utils.randomFunc(10),
            submit2.bounds().centerY() + utils.randomFunc(5)
          );
        }

        const submitTwo = text("确定").findOne(200);

        // 如果出现了确定，点击一下
        if (submitTwo) {
          // 做随机数点击位置防止行为检测
          click(
            submitTwo.bounds().centerX() + utils.randomFunc(10),
            submitTwo.bounds().centerY() + utils.randomFunc(5)
          );
        }

        updateOrder();
      }
    }
  }
}

function shopCartFunc() {
  console.log("当前模式：购物车模式");
}

// 提交订单
function updateOrder() {
  let isFinishPage = false;
  while (!isFinishPage) {
    if (text("抢购失败").exists()) {
      isFinishPage = true;
      back();
      detailFunc(false);
    } else if (text("返回购物车").exists()) {
      isFinishPage = true;
      // 这里执行抢购方案
      const backShopCart = text("返回购物车").findOne(50);
      // 做随机数点击位置防止行为检测
      click(
        backShopCart.bounds().centerX() + utils.randomFunc(10),
        backShopCart.bounds().centerY() + utils.randomFunc(5)
      );
      detailFunc(false);
    } else if (text("提交订单").exists()) {
      clickUpdate();
    } else if (text("确定").exists()) {
      // 这里执行抢购方案
      const ok = text("确定").findOne(50);
      // 做随机数点击位置防止行为检测
      click(
        ok.bounds().centerX() + utils.randomFunc(10),
        ok.bounds().centerY() + utils.randomFunc(5)
      );
    }
  }
}

// 开启猛点提交方案
function clickUpdate() {
  console.log("注意订单状态，如果抢购成功请及时支付");
  while (true) {
    sleep(10);
    if (text("提交订单").exists()) {
      // 这里执行抢购方案
      const clickOrder = text("提交订单").findOne(50);
      // 做随机数点击位置防止行为检测
      click(
        clickOrder.bounds().centerX() + utils.randomFunc(10),
        clickOrder.bounds().centerY() + utils.randomFunc(5)
      );
    }
  }
}

// 打开京东
function openJD() {
  var alertConfirm = confirm(content.openJD);
  if (alertConfirm) {
    app.launch("com.jingdong.app.mall");
  }
}

module.exports = jd;
